package com.nablasystems.suag.domain;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

@Entity
@Table(name="materia")
public class Materia {
	//Atributos
	@Id
	@Column(name="idMateria")
	@GeneratedValue
	private Integer idMateria;
	
	@Column(name="nombre")
	private String nombre;
	
	@Column(name="descripcion")
	private String descripcion;
	
	@OneToMany(mappedBy="materia",cascade= CascadeType.ALL)
	private Set<Curso> cursos = new HashSet<Curso>();
	
	//Atributo muchos a muchos
	@ManyToMany(cascade = {CascadeType.ALL})
	@JoinTable(name="materia_x_carrera",joinColumns={@JoinColumn(name="idMateria")},inverseJoinColumns={@JoinColumn(name="idCarrera")})
	private Set<Carrera> carreras = new HashSet<Carrera>();
	
	
	//Getting and Settings
	public Integer getIdMateria() {
		return idMateria;
	}

	public void setIdMateria(int idMateria) {
		this.idMateria = idMateria;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	public Set<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(Set<Curso> cursos) {
		this.cursos = cursos;
	}

	public Set<Carrera> getCarreras() {
		return carreras;
	}

	public void setCarreras(Set<Carrera> carreras) {
		this.carreras = carreras;
	}

	public void setIdMateria(Integer idMateria) {
		this.idMateria = idMateria;
	}

	public String toString(){
		return this.nombre;
	}
}
